import minimist from 'minimist';
import { execa } from 'execa';

// minimist 把获取到的命令行参数生成 json 方式，方便编程使用
const args = minimist(process.argv.slice(2));

// console.log(process.argv)
// console.log(args)

// const pack = 'reactivity';
// const pack = 'runtime-core';
const pack = 'runtime-dom';
// const pack = 'compiler-dom';
// 这了开发阶段手动修改需要打包那个模块即可
const target = args._.length ? args._[0] : pack; // 指定哪个模块打包
const formats = args.f || 'global'; // 指定打包后的方式: esm-bunlder global cjs
const sourcemap = args.s || false; // 指定打包后是否生产 sourceMap

async function build(target) {
  // 执行命令 rollup -c --environment TARGET:reactivity,xxx:xxx,xxx:xxx
  const env = 'development';
  await execa(
    'rollup',
    [
      '-cw', // --watch --config
      '--environment',
      [
        `TARGET:${target}`,
        `FORMATS:${formats}`,
        `NODE_ENV:${env}`,
        sourcemap ? `SOURCE_MAP:true` : ``
      ].filter(Boolean).join(',')
    ],
    { stdio: 'inherit' } // 该子进程在当前命令行输出
  )
}

build(target);
